﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Practice_2016_11_27
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1) В банк на трёхпроцентный вклад положили S гривен. Какой станет сумма вклада через N лет.
            //CalculateAccount(1000, 5);

            // 2) Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3, но не делятся на 5.
            //PrintSpecialNumbers();

            // 3) Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке.
            //ReverseNumber(12345);
        }

        // 1) В банк на трёхпроцентный вклад положили S гривен. Какой станет сумма вклада через N лет.
        static void CalculateAccount(int initValue, int years, double percents = 3)
        {
            Console.WriteLine("Расчет состояния вклада суммой {0} грн под {1}% на {2} лет:", initValue, percents, years);
            if (years <= 0)
            {
                Console.WriteLine("Число лет должно быть больше нуля, расчет невозможен");
            }
            else if (initValue <= 0)
            {
                Console.WriteLine("Сумма вклада должна быть больше нуля, расчет невозможен");
            }
            else
            {
                double coef = (100 + percents) / 100;
                Console.WriteLine("Итоговый баланс счета без учёта капитализации процентов - {0:0.00} гривен.", initValue * (1 + (percents * years)/100));
                double result = initValue;
                for (int i = 0; i < years; i++)
                {
                    result *= coef;
                }
                Console.WriteLine("Итоговый баланс счета при ежегодной выплате процентов и с учётом капитализации - {0:0.00} гривен.", result);
                result = initValue;
                coef = (100 + percents / 12) / 100;
                for (int i = 0; i < years * 12; i++)
                {
                    result *= coef;
                }
                Console.WriteLine("Итоговый баланс счета при ежемесячной выплате процентов и с учётом капитализации - {0:0.00} гривен.", result);
            }
        }

        // 2) Даны натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3, но не делятся на 5.
        
        static void PrintSpecialNumbers()
        {
            Console.WriteLine("Числа в промежутке [20; 50], \nкоторые делятся нацело на 3 и не делятся нацело на 5:");
            for (int i = 20; i <= 50; i++)
            {
                if ((i % 3 == 0) && (i % 5 != 0))
                    Console.Write("{0} ", i);
            }
            Console.WriteLine();
        }

        // 3) Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке.
        static void ReverseNumber(int initNumber)
        {
            Console.WriteLine("Origin number: {0}", initNumber);
            int reversedNumber = 0;
            while (initNumber > 0)
            {
                reversedNumber = reversedNumber * 10 + initNumber % 10;
                initNumber /= 10;
            }
            Console.WriteLine("Reversed number: {0}", reversedNumber);

        }
    }
}
